package PossiveisJogadas;

import java.util.LinkedList;
import java.util.List;

import util.Constantes;
import Controle.TelaJogo;
import MotorGrafico.Indice;
import MotorGrafico.MotorGrafico;
import MotorGrafico.Tabuleiro;
import MotorRegras.Regras;

public class JogadasTorre {

	/**
	 * M�todo para mostrar na tela todas as jogadas possiveis da torre.
	 * 
	 * @param Indice origemPeca - Lugar de origem da Torre
	 * @param Tabuleiro tabuleiro - Tabuleiro
	 * @return as casas onde a torre pode andar.
	 */
	
	@SuppressWarnings({ "static-access" })
	public static List<Indice> possiveisJogadas(Indice origemPeca, Tabuleiro tabuleiro)
	{
		List<Indice> lista = new LinkedList<Indice>();
	
		TelaJogo tj = (TelaJogo) MotorGrafico.getInstance().getTela(Constantes.TELA_JOGAR);	
		Regras regras = tj.getJogoLogica().getRegras();
		int tipoTorre = tabuleiro.getPeca(origemPeca.i, origemPeca.j);
		boolean kamikaze = false;
		int max = 8;
		 for (int n=0; n<max; n++) {  
		     for (int m=0; m<max; m++) {
		    	 int posicaoAlvo = tabuleiro.getPeca(n,m);
		    	 if  (regras.isMovimentoValido(tabuleiro, origemPeca , new Indice(n,m), kamikaze)){ 
		    		 if ((tabuleiro.isPecaBranca(tipoTorre)) == (tabuleiro.isPecaNegra(posicaoAlvo)))
		    			 lista.add(new Indice(n,m));
		    		 if ((tabuleiro.isPecaNegra(tipoTorre)) == (tabuleiro.isPecaBranca(posicaoAlvo)))
		    			 lista.add(new Indice(n,m));
		    	 }
		    }
		 }	
		return lista;
	}
}
